package tec;
import java.util.Scanner;
import java.io.*;


public abstract class OptionClient{
    
    private static int choix;

    /*
    public int getChoix(){
	return choix;
    } 
    */
    abstract public void lancer() throws TecInvalidException;
    

    protected  final  void menuProgramme(String s){
	System.out.println("\n\n--------------------------- Entrer votre choix ----------------------------");
	System.out.println("Executer " + s + " avec journalisation de l'autobus ------------------- (1)");
	System.out.println("Executer " + s + " sans journalisation de l'autobus ------------------- (2)");
	System.out.println("Quitter ---------------------------------------------------------------- (0)");
    }


    protected final void choixTypeExecution(String s) throws TecInvalidException, IOException{
	String  avecBarre;
	Scanner sc = new Scanner(System.in);
	menuProgramme(s);
	choix = sc.nextInt();
	
	while(choix!=0 && choix!=1 && choix!=2){
	    System.out.println("Erreur de syntaxe!!");
	    menuProgramme(s);
	    choix = sc.nextInt();
	}
	if(choix !=0){
	    Scanner b = new Scanner(System.in);
	    System.out.println("\n\nSouhaitez-vous afficher les barres représentant les jauges naturels? (oui/non)");
	    
	    avecBarre = b.nextLine();
	    while(!avecBarre.equals("oui") && !avecBarre.equals("non")){
		System.out.println("Erreur de syntaxe!!");
		System.out.println("Souhaitez-vous afficher les barres représentant les jauges naturel? (oui/non)");
		avecBarre = b.nextLine();
	    }
	    
	    if (avecBarre.equals("oui"))
		Autobus.barre = true;
	    else
		Autobus.barre = false;
	    
	    
	    if(choix == 1 ){
		System.out.println("\n\nLancement de " + s + " avec journalisation ");
		System.out.println(""); 
		FabriqueBus.journalisation = true;
		lancer();
		affichage(s);
		System.out.println(""); 
		System.out.println(""); 
		System.exit(0);
	    }
	    if(choix == 2){
		System.out.println("Lancement de " + s + " sans journalisation"); 
		System.out.println(""); 
		FabriqueBus.journalisation = false;
		lancer();
		System.out.println("\n\n\nFin du Programme de "+ s);
		System.exit(0);
		
	    }
	}
	else{
	    System.out.println("Fin du programme");
	    return;
	}
	
    }
    
    protected  final void affichage(String s) throws IOException, TecInvalidException{
	System.out.println("\n\n\nLe journal de " + s + "  a ete cree dans le fichier log.txt\nVoulez-vous afficher le journal de l'autobus? (oui/non)");
	Scanner sc = new Scanner(System.in);
	String tmp = sc.nextLine();
	while(!tmp.equals("oui") && !tmp.equals("non")){
	    System.out.println("Erreur de syntaxe!!");
	    affichage(s);
	    tmp = sc.nextLine();
	}
	if(tmp.equals("oui")){
	    System.out.println("\n\nJournal de l'autobus de "+s + ":\n");
	    affiche_journal(s);
	    System.out.println("\n\nFin du programme");
	}
	else{
	    System.out.println("\n");
	    System.out.println("\n\nFin du programme");
	}
    }



	
    public void affiche_journal(String s) throws IOException, TecInvalidException {
	String ligne = "";
	String fichier = "log.txt";
	BufferedReader clavier = new BufferedReader(new InputStreamReader(System.in));
	BufferedReader ficTexte;
	try {
	    ficTexte = new BufferedReader(new FileReader(new File(fichier)));
	    if (ficTexte == null) {
		throw new FileNotFoundException("Fichier non trouvé: " + fichier);
	    }
	    ligne = ficTexte.readLine();
	    while (ligne != null){
		    System.out.println(ligne);
		    ligne = ficTexte.readLine();
	    }
	    ficTexte.close();
	    System.out.println("\n\n");
	} catch (FileNotFoundException e) {
	    System.out.println(e.getMessage());
		} 
	catch (IOException e) {
	    System.out.println(e.getMessage());
	}
    }
    
    






    }
	    
